// 声明

#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <stdlib.h>

#define NAME_MAX 20
#define SEX_MAX 5
#define TELE_MAX 12
#define ADDR_MAX 30
#define MAX 100

#define DEFAULT_SZ 3
#define DEFAULT_INC 2

typedef struct PeoInfo
{
    char name[NAME_MAX];
    int age;
    char sex[SEX_MAX];
    char tele[TELE_MAX];
    char addr[ADDR_MAX];
} PeoInfo;

// 静态通讯录的版本
// typedef struct Contact
// {
//     PeoInfo data[MAX]; // 存放数据
//     int sz;            // 记录的是当前通讯录存放的人的信息的个数
// } Contact;

// 动态通讯录的版本

typedef struct Contact
{
    PeoInfo *data; // 存放数据
    int sz;        // 记录当前通讯录存放的人信息的个数
    int capacity;  // 记录的是通讯录当前容量
} Contact;

void InitContact(Contact *pc);
void AddContact(Contact *pc);
void ShowContact(const Contact *pc);
void DelContact(Contact *pc);
void SearchContact(Contact *pc);
void ModifyContact(Contact *pc);
void DestroyContact(Contact *pc);
void SaveContact(Contact *pc);
void LoadContact(Contact *pc);
